import 'dart:convert';
import 'package:shared_preferences/shared_preferences.dart';

class AuthService {
  static const String _storageKey = 'user_auth';

  // 模拟用户数据存储
  Future<void> _saveUser(Map<String, dynamic> userData) async {
    final prefs = await SharedPreferences.getInstance();
    await prefs.setString(_storageKey, json.encode(userData));
  }

  // 获取当前用户数据
  Future<Map<String, dynamic>?> getCurrentUser() async {
    final prefs = await SharedPreferences.getInstance();
    final userStr = prefs.getString(_storageKey);
    if (userStr != null) {
      return json.decode(userStr) as Map<String, dynamic>;
    }
    return null;
  }

  // 登录方法
  Future<Map<String, dynamic>> login(String email, String password) async {
    // 模拟网络请求延迟
    await Future<void>.delayed(const Duration(seconds: 1));

    // TODO: 这里应该是真实的API调用
    // 现在先模拟一个简单的验证
    if (email == "test@qq.com" && password == "123456") {
      final userData = {
        'email': email,
        'name': '测试用户',
        'token': 'dummy_token_${DateTime.now().millisecondsSinceEpoch}',
      };
      await _saveUser(userData);
      return userData;
    } else {
      throw '邮箱或密码错误';
    }
  }

  // 注册方法
  Future<Map<String, dynamic>> register(String email, String password) async {
    // 模拟网络请求延迟
    await Future<void>.delayed(const Duration(seconds: 1));

    // TODO: 这里应该是真实的API调用
    // 现在先模拟注册过程
    if (email.contains('@')) {
      final userData = {
        'email': email,
        'name': email.split('@')[0],
        'token': 'dummy_token_${DateTime.now().millisecondsSinceEpoch}',
      };
      await _saveUser(userData);
      return userData;
    } else {
      throw '注册失败：无效的邮箱地址';
    }
  }

  // 登出方法
  Future<void> logout() async {
    final prefs = await SharedPreferences.getInstance();
    await prefs.remove(_storageKey);
  }
}
